Random numbers

Generally, if an Enu command takes a number, it will be a float. However, int will auto-convert to float, and when a numeric Range is passed to something expecting a number, a random value within the range will be selected. So, even though forward expects a float, the following are all valid:

forward 1.0
forward 1

# Convert to a random float between 1.0 and 5.0
forward 1.0..5.0

# Convert to a random int between 1 and 5, then convert the
# int to a float
forward 1..5

The in operator can be used between two numbers to test for random chance. For example:

if 1 in 2:
  echo "I should be hit 50% of the time"
if 1 in 100:
  echo "I should be hit 1% of the time"

By default random numbers in Enu are based partially on the time and will be different each time a script is executed. However, sometimes you want randomness to create variety, but want the same values to be chosen each time a script is run. This is especially important when using randomness in a Build that you plan to manually edit later. To ensure the same values are selected each time a script is run, set the unit's seed property to some integer of your choosing, ie seed = 12345 or me.seed = 54321.

Any child units instanced by a unit with a seed value will get the same seed by default. However, it will still get a unique random number generator, so changing the script for a child object won't impact the random numbers selected by the parent.